﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using DAO;

namespace Thefaceless
{
    public partial class FDrinks : Form
    {
        private Boolean CheckAddDrinks = false;
        public FDrinks()
        {
            InitializeComponent();
        }

        //load dữ liệu đồ uống lên dataGridview
        private void LoadDrink()
        {
            DataProvider dp = new DataProvider();
            string sql = "select * from DANHMUCDOUONG";
            DataTable dt = dp.ExecuteQuery(sql);
            this.dataListDrinks.DataSource = dt;
        }

        private void ClearTextBox()
        {
            this.txtIDDrinks.Clear();
            this.txtNameDrinks.Clear();
            this.txtCostDrinks.Clear();
            this.txtNumberDrinks.Clear();
        }

        private void FDrinks_Load(object sender, EventArgs e)
        {
            LoadDrink();
        }

        //đưa dữ liệu lên textbox
        private void dataListDrinks_CellClick(object sender, DataGridViewCellEventArgs e)
        {
            int index = e.RowIndex;
            this.txtIDDrinks.ReadOnly = true;
            this.txtNameDrinks.ReadOnly = true;
            if (index >= 0 && index < this.dataListDrinks.Rows.Count)
            {
                DataGridViewRow row = this.dataListDrinks.Rows[index];
                this.txtIDDrinks.Text = row.Cells[0].Value.ToString();
                this.txtNameDrinks.Text = row.Cells[1].Value.ToString();
                this.txtCostDrinks.Text = row.Cells[2].Value.ToString();
                this.txtNumberDrinks.Text = row.Cells[3].Value.ToString();
            }
        }


        private void btnDelete_Click(object sender, EventArgs e)
        {
            if (MessageBox.Show("Bạn chắc chắn muốn xóa?", "Thông báo", MessageBoxButtons.OKCancel,
                MessageBoxIcon.Question) == DialogResult.OK)
            {
                string id = this.txtIDDrinks.Text;
                //xóa đồ uống và các bảng liên quan
                string sqlCT = "delete from CHITIETHOADON where MaDoUong ='" + id + "'";

                string sql = "delete from DANHMUCDOUONG where MaDoUong='" + id + "'";
                DataProvider dp = new DataProvider();
                dp.ExecuteQuery(sqlCT);
                dp.ExecuteQuery(sql);
                LoadDrink();
                ClearTextBox();
            }
        }

        //kiểm tra mã đồ uống có tồn tại không
        private Boolean CheckID(String id)
        {
            DataProvider dp = new DataProvider();
            string sql = "select * from DANHMUCDOUONG";
            DataTable dt = dp.ExecuteQuery(sql);
            for (int i = 0; i < dt.Rows.Count; i++)
                if (id.Equals(dt.Rows[i][0].ToString()))
                    return true;
            return false;
        }

        //kiểm tra tên đồ uống có tồn tại không
        private Boolean CheckName(String name)
        {
            DataProvider dp = new DataProvider();
            string sql = "select * from DANHMUCDOUONG";
            DataTable dt = dp.ExecuteQuery(sql);
            for (int i = 0; i < dt.Rows.Count; i++)
                if (name.Equals(dt.Rows[i][1].ToString()))
                    return true;
            return false;
        }

        //kiểm tra độ dài
        private Boolean CheckLength()
        {
            General g = new General();
            if (g.CheckLength(txtIDDrinks.Text) == true && g.CheckLength(txtCostDrinks.Text) == true && txtNameDrinks.Text.Length<50 == true
                && g.CheckLength(txtNumberDrinks.Text) == true)
                return true;
            return false;
        }


        private void update()
        {
            string id = txtIDDrinks.Text;
            string name = txtNameDrinks.Text;
            string cost = txtCostDrinks.Text;
            string number = txtNumberDrinks.Text;
            General g = new General();
            DataProvider dp = new DataProvider();
            if (this.CheckAddDrinks == false)
            {
                if (MessageBox.Show("Bạn chắn chắn muốn lưu thay đỗi?", "Thông báo", MessageBoxButtons.OKCancel,
                    MessageBoxIcon.Question) == DialogResult.OK)
                {
                    if (cost != "" && number != "")
                    {
                        if (g.CheckIsNumber(cost) == true && g.CheckIsNumber(number) == true)
                        {
                            if (CheckLength() == true)
                            {
                                string sql = "update DANHMUCDOUONG set GiaTien='" + cost + "',SoLuong ='" + number + "' where MaDoUong ='" + id + "'";
                                dp.ExecuteQuery(sql);
                            }
                            else
                            {
                                MessageBox.Show("Độ dài dữ liệu không hợp lệ", "Thông báo");
                            }
                        }
                        else
                        {
                            MessageBox.Show("Dữ liệu không hợp lệ", "Thông báo");
                        }
                    }
                    else
                    {
                        MessageBox.Show("Vui lòng nhập đầy đủ thông tin", "Thông báo");
                    }
                }
            }
        }

        //kiểm tra xem mã đồ uống có đúng chuẩn không
        private Boolean CheckFomatID(String id)
        {
            if (id.Length != 5)
                return false;
            else
            {
                General g = new General();
                string s1 = id.Substring(0, 2);
                string s2 = id.Substring(3);
                if (s1.Equals("DU") && g.CheckIsNumber(s2) == true)
                    return true;
                return false;
            }
        }

        private void Add()
        {
            string id = txtIDDrinks.Text;
            string name = txtNameDrinks.Text;
            string cost = txtCostDrinks.Text;
            string number = txtNumberDrinks.Text;
            DataProvider dp = new DataProvider();
            General g = new General();
            if(CheckAddDrinks == true)
            {
                if (MessageBox.Show("Bạn chắc chắn muốn thêm đồ uống này?", "Thông báo", MessageBoxButtons.OKCancel
                   , MessageBoxIcon.Question) == DialogResult.OK)
                {
                    if (id != "" && name != "" && cost != "" && number != "")
                    {
                        if (CheckID(id) == false)
                        {
                            if (CheckID(name) == false)
                            {
                                if (g.CheckIsNumber(cost) == true && g.CheckIsNumber(number) == true)
                                {
                                    if (CheckFomatID(id) == true)
                                    {
                                        if (CheckLength())
                                        {
                                            string sql = "insert into DANHMUCDOUONG values ('" + id + "','" + name + "','" + cost + "','" + number + "')";
                                            dp.ExecuteQuery(sql);
                                            ClearTextBox();
                                            this.txtIDDrinks.ReadOnly = true;
                                            this.txtNameDrinks.ReadOnly = true;
                                        }
                                        else
                                            MessageBox.Show("độ dài dữ liệu quá lớn", "Thông báo");
                                    }
                                    else
                                        MessageBox.Show("Mã đồ uống phải có dạng \"DU***\" ");
                                }
                                else
                                {
                                    MessageBox.Show("Dữ liệu không hợp lệ", "Thông báo");
                                }
                            }
                            else
                            {
                                MessageBox.Show("Tên đồ uống đã có", "Thông báo");
                            }
                        }
                        else
                        {
                            MessageBox.Show("Mã đồ uống đã có", "Thông báo");
                        }
                    }
                    else
                    {
                        MessageBox.Show("Vui lòng nhập thông tin đầy đủ", "Thông báo");
                    }
                }
            }
        }

        private void btnSave_Click(object sender, EventArgs e)
        {
            this.update();
            this.Add();
            this.LoadDrink();
        }

        private void btnAdd_Click(object sender, EventArgs e)
        {
            ClearTextBox();
            this.txtIDDrinks.ReadOnly = false;
            this.txtNameDrinks.ReadOnly = false;
            this.CheckAddDrinks = true;
        }

        //lấy giá trị từ combobox
        private string CheckSreach()
        {
            string cb = cbKeyFind.Text;
            if (cb == "Mã đồ uống")
                return "MaDoUong";
            if (cb == "Tên đồ uống")
                return "TenDoUong";
            if (cb == "Giá tiền")
                return "GiaTien";
            if (cb == "Số lượng")
                return "SoLuong";
            return null;
        }

        private void btnSearch_Click(object sender, EventArgs e)
        {
            string values = txtValue.Text;
            General g = new General();
            DataProvider dp = new DataProvider();
            if (CheckSreach() != null)
            {
                if (values != "")
                {
                    if (g.CheckLength(values) == true)
                    {
                        string sql = "select * from DANHMUCDOUONG where " + CheckSreach() + "like '" + values + "%'";
                        DataTable dt = dp.ExecuteQuery(sql);
                        this.dataListDrinks.DataSource = dt;
                        ClearTextBox();
                    }
                    else
                    {
                        MessageBox.Show("Đồ dài dữ liệu không hợp", "Thông báo");
                    }
                }
                else
                {
                    string sql = "select * from DANHMUCDOUONG";
                    DataTable dt = dp.ExecuteQuery(sql);
                    this.dataListDrinks.DataSource = dt;
                }
            }
        }

        private void btnCancel_Click(object sender, EventArgs e)
        {
            this.cbKeyFind.Text = "";
            this.txtValue.Text = "";
            LoadDrink();
            ClearTextBox();
        }

        private void btnClear_Click(object sender, EventArgs e)
        {
            if (CheckAddDrinks == true)
            {
                this.txtIDDrinks.Clear();
                this.txtNameDrinks.Clear();
                this.txtCostDrinks.Clear();
                this.txtNumberDrinks.Clear();
            }
            else
            {
                this.txtCostDrinks.Clear();
                this.txtNumberDrinks.Clear();
            }
        }
    }
}
